Modern microprocessors include fuses that may be selectively blown during manufacturing of the microprocessor. The fuses may be selectively blown with control values that are read from the fuses to control operation of the microprocessor. Normally, when a non-blown fuse is read it returns a binary zero, and when a blown fuse is read it returns a binary one (although, of course, the convention could be reversed). However, the present inventors have observed microprocessors operating in the field that have blown fuses that change their value; that is, they return the incorrect binary zero value, in some cases intermittently, even though they returned the correct binary one value when tested during manufacturing. This is referred to as a fuse “re-growing,” or fuse “re-growth.” That is, a blown fuse may be physically altered by continual operation of the microprocessor such that when read, the fuse returns its non-blown value rather than its blown value. The consequences of this fuse re-growth can be disastrous to the subsequent operation of the microprocessor, depending upon the particular use of the value in the re-grown fuse. Additionally, the symptoms caused by a re-grown fuse can be very difficult to detect during failure analysis.
U.S. patent application Ser. No. 12/609,207 (CNTR.2490), describes a solution to this problem that employs EDAC fuses. This is a solution for fuses that are correctable. That is, most of the fuses are used to populate control hardware that is written by the microcode. Specifically, the microcode reads the values from the fuses, corrects the values using the EDAC fuses if necessary, and then writes the corrected values to the hardware, e.g., model specific register (MSR), feature control register (FCR), patch hardware, etc. However, some of the fuses are not correctable by microcode. That is, when the chip powers up, the values in the uncorrectable fuses are scanned directly to hardware registers without giving the microcode the ability to correct them using the EDAC technique. Examples are cache correction fuses and PLL adjustment fuses. In one embodiment of the microprocessor, microcode cannot read the uncorrectable fuses.
Therefore, what is needed is a way to determine whether the uncorrectable fuses have re-grown.